package cn.zn.modules.pz.his.controller;

import cn.zn.framework.common.utils.PageUtils;
import cn.zn.framework.common.utils.R;
import cn.zn.framework.common.utils.Result;
import cn.zn.modules.pz.cur.service.TpMainService;
import cn.zn.modules.pz.his.entity.dto.PzDetailDTO;
import cn.zn.modules.pz.his.entity.dto.PzQueryDTO;
import cn.zn.modules.pz.his.entity.vo.IPz;
import cn.zn.modules.pz.his.service.PzMainService;
import cn.zn.modules.zzsys.inter.annotation.Login;
import cn.zn.modules.zzsys.inter.annotation.LoginUser;
import cn.zn.modules.zzsys.inter.dto.LoginUserDTO;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.validation.Valid;

@RestController
@RequestMapping("pz/his/pzmain")
@Slf4j
public class PzMainController {

    @Autowired
    private PzMainService pzMainService;
    @Autowired
    private TpMainService tpMainService;

    /**
     * 列表
     *
     * @param dto
     * @return
     */
    @PostMapping("/list")
    @Login
    public R list(@LoginUser LoginUserDTO loginUserDTO, @RequestBody PzQueryDTO dto) {
        if (dto.getOnlyMe()) {
            dto.setApplyUserCode(loginUserDTO.getWorkNo());
        }
        PageUtils pageUtils;
        if (pzMainService.isCurPeriod(dto.getAp())) {
            cn.zn.modules.pz.cur.entity.dto.PzQueryDTO curDto = new cn.zn.modules.pz.cur.entity.dto.PzQueryDTO();
            BeanUtils.copyProperties(dto, curDto);
            pageUtils = tpMainService.queryPage(curDto);
        } else {
            pageUtils = pzMainService.queryPage(dto);
        }
        return R.ok().put("page", pageUtils);
    }

    /**
     * 详情
     *
     * @param pzQueryDTO
     * @return
     */
    @PostMapping("/detail")
    public Result<IPz> detail(@Valid @RequestBody PzDetailDTO pzQueryDTO) {
        return Result.ok(pzMainService.findDetail(pzQueryDTO.getAp(), pzQueryDTO.getApplyType(), pzQueryDTO.getMainId()));
    }
}
